Communication message consolidation with content difference formatting

ABSTRACT

A set of similar messages addressed to a user is detected. Redundantly similar portions of the set of similar messages and a progressive set of differences between the set of similar messages are identified. The set of similar messages are consolidated into a single consolidated message. The single consolidated message includes one version of the redundantly similar portions in association with the progressive set of differences in a sequence and the progressive set of differences formatted differently from the redundant similar portions.

BACKGROUND

The present invention relates to processing of communication messages.More particularly, the present invention relates to communicationmessage consolidation with content difference formatting.

Users of communication devices may generate and send messages to eachother. The types of messages users may generate and send include, forexample, electronic mail messages (“emails”), text messages, and instantmessages.

SUMMARY

A method includes detecting, by a processor, a set of similar messagesaddressed to a user; identifying redundantly similar portions of the setof similar messages and a progressive set of differences between the setof similar messages; and consolidating the set of similar messages intoa single consolidated message comprising one version of the redundantlysimilar portions in association with the progressive set of differencesin a sequence and the progressive set of differences formatteddifferently from the redundant similar portions within the singleconsolidated message.

A system that performs the method and a computer program product thatcauses a computer to perform the method are also described.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example of an implementation of a systemfor communication message consolidation with content differenceformatting according to an embodiment of the present subject matter;

FIG. 2 is a block diagram of an example of an implementation of a coreprocessing module capable of performing communication messageconsolidation with content difference formatting according to anembodiment of the present subject matter;

FIG. 3 is a diagram of an example representation of an initial memorystate prior to communication message consolidation with contentdifference formatting according to an embodiment of the present subjectmatter;

FIG. 4 is a diagram of an example representation of a consolidatedmemory state after communication message consolidation with contentdifference formatting according to an embodiment of the present subjectmatter;

FIG. 5 is a diagram of an example of an illustration of consolidatedmessage content of the consolidated message of FIG. 4 aftercommunication message consolidation with content difference formattingrendered on a display according to an embodiment of the present subjectmatter;

FIG. 6 is a flow chart of an example of an implementation of a processfor communication message consolidation with content differenceformatting according to an embodiment of the present subject matter; and

FIG. 7 is a flow chart of an example of an implementation of a processfor communication message consolidation with content differenceformatting that includes message consolidation configuration andadditional message consolidation processing details according to anembodiment of the present subject matter.

DETAILED DESCRIPTION

The examples set forth below represent the necessary information toenable those skilled in the art to practice the invention and illustratethe best mode of practicing the invention. Upon reading the followingdescription in light of the accompanying drawing figures, those skilledin the art will understand the concepts of the invention and willrecognize applications of these concepts not particularly addressedherein. It should be understood that these concepts and applicationsfall within the scope of the disclosure and the accompanying claims.

The subject matter described herein provides communication messageconsolidation with content difference formatting. The technologydescribed herein solves a recognized communication messaging problem byproviding technology that includes a new form of communication messageconsolidation that reduces memory and computational processingrequirements for communication message storage and transmissionbandwidth within complex computing environments. The technologydescribed herein further provides a digest of formatted contentdifferences to identify differences in a recognizable manner. As such,the technology described herein may improve performance of computingdevices and network interconnection devices, reduce memory at messagingservers and client devices, and reduce bandwidth that would otherwise beutilized to transmit the unmodified communication messages.

The technology described herein operates by detecting a set of similarmessages addressed to a user, either at a messaging server or at amessaging client device. Redundantly similar portions of the set ofsimilar messages and a progressive set of differences between the set ofsimilar messages are identified. The set of similar messages isconsolidated into a single consolidated message that includes oneversion of the redundantly similar portions in association with theprogressive set of differences in a sequence within the singleconsolidated message.

The technology described herein programmatically/automatically comparesand analyzes communication messages (e.g., emails, text messages, etc.)that contain similar subject lines and/or content. Communicationmessages with similar subject lines and/or content are consolidated intoa single message with one version of “common content” that is identifiedacross a set of messages, and with progressive differences across theoriginal messages graphically formatted to differentiate the progressivedifferences. The messaging system user may quickly visualize thechange/delta between communication messages by use of the formattedprogressive differences. The result further provides reduced processorand storage load at communication servers, reduced bandwidth duringmessage transmission, and reduced storage at client computing devices.

Certain portions of the description below utilize the term “messages”for purposes of example and ease of description. The description belowin certain portions also utilizes electronic mail messages (e.g.,“emails”) for ease of reference. However, it should be understood thatthe description herein applies at least equally to many additional formsof messaging and communication platforms. For example, text messages,instant messages (IM), short message service (SMS) messages, and otherforms of messages may also be processed according to the technologydescribe herein. In other alternative implementations, the presenttechnology may also be applied to other communication tools, such asonline social networking websites where users communicate by use ofstatus updates, message boards, and other forms of messaging. As such,the technology described herein may be implemented in a variety ofplatforms, and each such variation is considered within the scope of thepresent technology.

The technology described herein may further be applied at a messagingserver device or at a user's messaging client device, as appropriate fora given implementation. When a user account receives new messages (e.g.,at a messaging server or at the user's messaging client device), themessages may be compared with other existing messages stored withinmemory to determine whether there are overlapping strings in either orboth of the subject and the content. Comparison of the messages may beconfigured according to time (e.g., messages received between a certainperiod of time or over a certain duration of time), may be configuredaccording to a quantity of messages received, or may be configuredotherwise as appropriate for a given implementation. Identified similarmessages are consolidated into a single message with the progressivedifferences formatted together as a set. This condensed message with theprogressive differences is propagated to the user so that the userreceives only one message across the respective predefined time periodor pursuant to the configured quantity of messages received, which asdescribed above reduces processing requirements, bandwidth fortransmission, and storage requirements both at servers and at the user'smessaging client device.

Message consolidation and progressive difference marking/formatting mayalso be configured to collect a separate quantity of different stringswithin the message content based upon the configured setting(s). Forexample, a group of messages that have ten (10) different strings may beformed into a consolidated message, or a group of messages that havetwenty (20) different strings in the content may be formed into aconsolidated message, each according to the configuration. The thresholdnumber of string differences may be configured as a difference thresholdfor message processing. Once a group of messages that have similarcontent are identified, the messages may be compared to identify theconfigured threshold of differences for consolidation of the respectivemessages and formatting of the progressive set of differences. Forpurposes of the description herein, the progressive set of differencesis alternatively referred to as a “difference thread” formed frommultiple discrete elements of content from multiple original messages.As such, the difference thread spans multiple original messages and thedifference thread is consolidated within the single message that isstored and/or transmitted, and ultimately delivered to the user.

Regarding consolidation of messages and formatting of identifiedprogressive content differences, the different messages may be compiledtogether by displaying the common text in a “regular” message textcolor, while displaying the delta (e.g., changes) across differentmessages in one or more different fonts, sizes, and/or colors. Manypossibilities for differentiating the delta across different messagesare possible, and all such possibilities are considered to be within thescope of the technology described herein.

As a result, a user may be presented with one single compiled messagewith distinguished content prominently identified for ease of review.This consolidated message captures the redundant/common text fromselected messages into a minimized form relative to the repetitivequantity of text required across all of the consolidated messages, andshows the text that is different among different emails in theconfigured different color, size, and/or font.

A timestamp may also be associated with each difference/delta entry ofthe progressive text differences within the consolidated message. Thetimestamp may further assist with determining the time across which thedifferent original messages were sent and/or processed.

The technology described herein may also be configured with availablereview-time thresholds that may be utilized to programmaticallydetermine what level of details the user will see depending upon howmuch time the user has to process inbox messages. For example, where theuser only has five (5) minutes to process one hundred (100) messages, aconfigured available review-time threshold of five (5) minutes may beused to generate a consolidated message that has only certain keyportions of the available differences highlighted (e.g., highlight five(5) key differences across the one hundred (100) messages). If the userhas a longer available time, such as ten (10) minutes to process the onehundred (100) emails, then a configured available review-time thresholdof ten (10) minutes may be used to generate the summarized consolidatedmessage to further include an additional set of key differences (e.g.,highlight five (5) more key differences for a total of ten (10) keydifferences across the one hundred (100) messages). The availablereview-time threshold may be selectable within a messaging userinterface by the user, and the user may change the available review-timethreshold in real time while reviewing a consolidated message to varythe highlighting of key differences while reviewing a particularconsolidated difference message that warrants more-detailed orless-detailed review.

The term “difference thread” as defined herein represents aconsolidated/constructed thread of differences that are identified,extracted, and accumulated programmatically across several differentcommunication messages. An example of a difference thread includesindividual test result differences that are reported individually acrossseveral messages generated as part of a test sequence for a particularsystem under test. These individual test results, when consolidated asdescribed herein, represent a constructed difference thread.

As also described herein, “common text” refers to text that is eitheridentical or similar across multiple communication messages. The commontext may include headers, greetings, salutations, and other text thatrecurs at different locations within the threaded communication messagewithout significant differentiation of the information presented acrossthe set of messages.

The constructed difference thread may be uniquely and differentlyformatted from other common text to differentiate the constructeddifference thread content at each progressive step of the consolidationof the communication messages over time. The formatted difference threadmay then be combined as a unit/set with one version of the common textthat recurs across the threaded communication message to form a uniquenew consolidated message that represents the common text succinctly andthat distinguishes the formatted difference thread so that differencesacross the set of communication messages may be readily distinguished bythe user, such as within a single consolidated view, while preservingthe common text for context usable to interpret the content of thedifference thread.

It should be noted that conception of the present subject matterresulted from recognition of certain limitations associated withcommunication system messaging. For example, it was observed that a userof a messaging program, such as an email program, often receives toomany emails that contain repetitive and very similar/common content withonly minor updates/changes from the previous similar emails. It wasobserved that this large number of similar emails with only minorchanges unnecessarily consumes storage space and processing resources atthe email servers, which may require increased user email quotas overtime and increased hardware resource requirements for such servers. Itwas additionally observed that transmission of so many messages withrepeated, common content to the end user unnecessarily consumes andwastes bandwidth. It was further observed that this quantity of emails,again with only minor updates and large volumes of common content,unnecessarily consumes memory and processing resources at the user'semail or other messaging client computing devices. Further, because ofthe similarities that often exist within the subject lines of suchmessages, it was determined that if the user looks at the subject lineof the emails, it is difficult for the user to determine whatdifferences are present within the content/body among these differentemails. As a result it takes a user considerable time to determinewhether any action has been requested from the user, which furthercompounds the message quota/storage problems. The present subject matterimproves communication message processing by reducing resource andprocessing requirements at mail servers and messaging client computingdevices, as described above and in more detail below. As such, improvedcommunication messaging may be obtained through use of the presenttechnology.

The communication message consolidation with content differenceformatting described herein may be performed in real time to allowprompt consolidation of communication messages with formatting ofprogressive content differences to reduce storage/processing and with abenefit of improved usability during message review by messaging systemusers. For purposes of the present description, real time shall includeany time frame of sufficiently short duration as to provide reasonableresponse time for information processing acceptable to a user of thesubject matter described. Additionally, the term “real time” shallinclude what is commonly termed “near real time”—generally meaning anytime frame of sufficiently short duration as to provide reasonableresponse time for on-demand information processing acceptable to a userof the subject matter described (e.g., within a portion of a second orwithin a few seconds). These terms, while difficult to precisely defineare well understood by those skilled in the art.

FIG. 1 is a block diagram of an example of an implementation of a system100 for communication message consolidation with content differenceformatting. A computing device_1 102 through a computing device_N 104communicate via a network 106 with several other devices. The otherdevices include a server_1 108 through a server_M 110. A database 112may store information, such as communication messages and consolidatedcommunication, within the system 100.

As will be described in more detail below in association with FIG. 2through FIG. 7, the computing device_1 102 through the computingdevice_N 104 and the server_1 108 through the server_M 110 may eachprovide automated communication message consolidation with contentdifference formatting. As such, the present technology may beimplemented at a user computing device or server device level, or by acombination of such devices as appropriate for a given implementation. Avariety of possibilities exist for implementation of the present subjectmatter, and all such possibilities are considered within the scope ofthe present subject matter.

The automated communication message consolidation with contentdifference formatting is based upon analysis of a set of communicationmessages, identification of similar messages and differences across thesimilar messages, and formatting of the set of identified similarmessages into a single consolidated message with the progressivedifferences formatted for ease of user review. The automatedcommunication message consolidation with content difference formattingmay reduce memory and bandwidth use, and processor utilization invarying degrees according to how the present technology is implemented.

The network 106 may include any form of interconnection suitable for theintended purpose, including a private or public network such as anintranet or the Internet, respectively, direct inter-moduleinterconnection, dial-up, wireless, or any other interconnectionmechanism capable of interconnecting the respective devices.

The server_1 108 through the server_M 110 may include any device capableof providing data for consumption by a device, such as the computingdevice_1 102 through the computing device_N 104, via a network, such asthe network 106. As such, the server_1 108 through the server_M 110 mayeach include a messaging server (e.g., email, text messaging, instantmessaging (IM), short message service (SMS), etc.), a social networkserver, a web server, an application server, or other data serverdevice.

The database 112 may include a relational database, an object database,or any other storage type of device. As such, the database 112 may beimplemented as appropriate for a given implementation.

FIG. 2 is a block diagram of an example of an implementation of a coreprocessing module 200 capable of performing communication messageconsolidation with content difference formatting. The core processingmodule 200 may be associated with either the computing device_1 102through the computing device_N 104 or with the server_1 108 through theserver_M 110, as appropriate for a given implementation. As such, thecore processing module 200 is described generally herein, though it isunderstood that many variations on implementation of the componentswithin the core processing module 200 are possible and all suchvariations are within the scope of the present subject matter.

Further, the core processing module 200 may provide different andcomplementary processing of content difference formatting withinconsolidated communication messages in association with eachimplementation. As such, for any of the examples below, it is understoodthat any aspect of functionality described with respect to any onedevice that is described in conjunction with another device (e.g.,sends/sending, etc.) is to be understood to concurrently describe thefunctionality of the other respective device (e.g., receives/receiving,etc.).

A central processing unit (CPU) 202 (“processor”) provides hardware thatperforms computer instruction execution, computation, and othercapabilities within the core processing module 200. A display 204provides visual information to a user of the core processing module 200and an input device 206 provides input capabilities for the user.

The display 204 may include any display device, such as a cathode raytube (CRT), liquid crystal display (LCD), light emitting diode (LED),electronic ink displays, projection, touchscreen, or other displayelement or panel. The input device 206 may include a computer keyboard,a keypad, a mouse, a pen, a joystick, touchscreen, voice commandprocessing unit, or any other type of input device by which the user mayinteract with and respond to information on the display 204.

It should be noted that the display 204 and the input device 206 may beoptional components for the core processing module 200 for certainimplementations/devices, or may be located remotely from the respectivedevices and hosted by another computing device that is in communicationwith the respective devices. Accordingly, the core processing module 200may operate as a completely automated embedded device without directuser configurability or feedback (e.g., for a server-basedimplementation). However, the core processing module 200 may alsoprovide user feedback and configurability via the display 204 and theinput device 206, respectively, as appropriate for a givenimplementation.

A communication module 208 provides hardware, protocol stack processing,and interconnection capabilities that allow the core processing module200 to communicate with other modules within the system 100. Thecommunication module 208 may include any electrical, protocol, andprotocol conversion capabilities useable to provide interconnectioncapabilities, as appropriate for a given implementation. As such, thecommunication module 208 represents a communication device capable ofcarrying out communications with other devices.

A memory 210 includes a message consolidation processing storage area212 that stores original messages and consolidated messages onceprocessed by the core processing module 200. As will be described inmore detail below, consolidated messages stored within the messageconsolidation processing storage area 212 consume less memory thanoriginal sets of messages, consume less bandwidth during transmission,and consume fewer processing resources during review.

It is understood that the memory 210 may include any combination ofvolatile and non-volatile memory suitable for the intended purpose,distributed or localized as appropriate, and may include other memorysegments not illustrated within the present example for ease ofillustration purposes. For example, the memory 210 may include a codestorage area, an operating system storage area, a code execution area,and a data area without departure from the scope of the present subjectmatter.

A message consolidation with progressive differences module 214 is alsoillustrated. The message consolidation with progressive differencesmodule 214 provides message set analysis, identification of similaritiesand differences among analyzed sets of messages, and consolidation ofmessages with formatted progressive differences for the core processingmodule 200, as described above and in more detail below. The messageconsolidation with progressive differences module 214 implements theautomated communication message consolidation with content differenceformatting of the core processing module 200.

It should also be noted that the message consolidation with progressivedifferences module 214 may form a portion of other circuitry describedwithout departure from the scope of the present subject matter. Further,the message consolidation with progressive differences module 214 mayalternatively be implemented as an application stored within the memory210. In such an implementation, the message consolidation withprogressive differences module 214 may include instructions executed bythe CPU 202 for performing the functionality described herein. The CPU202 may execute these instructions to provide the processingcapabilities described above and in more detail below for the coreprocessing module 200. The message consolidation with progressivedifferences module 214 may form a portion of an interrupt serviceroutine (ISR), a portion of an operating system, a portion of a browserapplication, or a portion of a separate application without departurefrom the scope of the present subject matter.

A timer/clock module 216 is illustrated and used to determine timing anddate information, such as for use in association with time periodsconfigured to prompt analysis and message consolidation, as describedabove and in more detail below. As such, the message consolidation withprogressive differences module 214 may utilize information derived fromthe timer/clock module 216 for information processing activities, suchas the communication message consolidation with content differenceformatting.

The database 112 is again shown within FIG. 2 associated with the coreprocessing module 200. As such, the database 112 may be operativelycoupled to the core processing module 200 without use of networkconnectivity, as appropriate for a given implementation.

The CPU 202, the display 204, the input device 206, the communicationmodule 208, the memory 210, the message consolidation with progressivedifferences module 214, the timer/clock module 216, and the database 112are interconnected via an interconnection 218. The interconnection 218may include a system bus, a network, or any other interconnectioncapable of providing the respective components with suitableinterconnection for the respective purpose.

Though the different modules illustrated within FIG. 2 are illustratedas component-level modules for ease of illustration and descriptionpurposes, it should be noted that these modules may include anyhardware, programmed processor(s), and memory used to carry out thefunctions of the respective modules as described above and in moredetail below. For example, the modules may include additional controllercircuitry in the form of application specific integrated circuits(ASICs), processors, antennas, and/or discrete integrated circuits andcomponents for performing communication and electrical controlactivities associated with the respective modules. Additionally, themodules may include interrupt-level, stack-level, and application-levelmodules as appropriate. Furthermore, the modules may include any memorycomponents used for storage, execution, and data processing forperforming processing activities associated with the respective modules.The modules may also form a portion of other circuitry described or maybe combined without departure from the scope of the present subjectmatter.

Additionally, while the core processing module 200 is illustrated withand has certain components described, other modules and components maybe associated with the core processing module 200 without departure fromthe scope of the present subject matter. Additionally, it should benoted that, while the core processing module 200 is described as asingle device for ease of illustration purposes, the components withinthe core processing module 200 may be co-located or distributed andinterconnected via a network without departure from the scope of thepresent subject matter. Many possible arrangements for components of thecore processing module 200 are possible and all are considered withinthe scope of the present subject matter. It should also be understoodthat, though the database 112 is illustrated as a separate component forpurposes of example, the information stored within the database 112 mayalso/alternatively be stored within the memory 210 without departurefrom the scope of the present subject matter. Accordingly, the coreprocessing module 200 may take many forms and may be associated withmany platforms.

FIG. 3 through FIG. 4 described below represent an example memoryimprovement sequence that may result by using the techniques describedherein, such as within the core processing module 200, to form aconsolidated message by use of the communication message consolidationwith content difference formatting associated with the present subjectmatter. The memory representations within FIG. 3 and FIG. 4 are not toany particular drawing scale.

FIG. 3 is a diagram of an example representation of an initial memorystate 300 prior to communication message consolidation with contentdifference formatting. Where message consolidation is performed at amessaging server device, such as one of the server_1 108 through theserver_M 110, the initial memory state 300 may represent memory at sucha messaging server device. Alternatively, where message consolidation isperformed at a messaging client device, such as the computing device_1102 through the computing device_N 104, the initial memory state 300 mayrepresent memory at such a messaging client device, as appropriate for agiven implementation.

The message consolidation processing storage area 212 of the memory 210is illustrated within FIG. 3 to include several communication messages,each represented within one line by a subject line of the respectivecommunication message. As can be seen from FIG. 3, a message 302, amessage 304, a message 306, a message 308, a message 310, a message 312,a message 314, a message 316, a message 318, a message 320, a message322, and a message 324 all include similar subject lines. For example,each of the messages 302 through 324 includes a user identifier (ID)field 326. Further, each of the messages 302 through 324 include a testidentifier (ID) field 328, a test results field 330, and a timestampfield 332 that identifies the date and time of the respective message.These messages 302 through 324 are identified from the first in time tothe latest in time based upon the timestamps within the respectivetimestamp field 332 of each message.

Programmatic analysis of the content of the respective subject linesand/or content of the respective messages may be performed, such as bythe message consolidation with progressive differences module 214, toidentify similarities and differences between the subject lines and/orcontent of the communication messages 302 through 324. It should furtherbe noted that additional sequences of message may be included within amemory area 334, as represented by the angled ellipsis dots. For purposeof the present example, it is assumed that the message consolidationprocessing storage area 212 is full at one hundred percent (100%)capacity prior to the processing described below with respect to FIG. 4.

FIG. 4 is a diagram of an example representation of a consolidatedmemory state 400 after communication message consolidation with contentdifference formatting. FIG. 4 represents an example consolidated messagewithin memory that may be produced/constructed from the messagesdescribed in association with FIG. 3. Where message consolidation isperformed at a messaging server device, such as one of the server_1 108through the server_M 110, the consolidated memory state 400 mayrepresent memory at such a messaging server device. Alternatively, wheremessage consolidation is performed at a messaging client device, such asthe computing device_1 102 through the computing device_N 104, theconsolidated memory state 400 may represent memory at such a messagingclient device, as appropriate for a given implementation.

As can be seen from FIG. 4, a single consolidated message 402 isillustrated as having been created that replaces all of the messages 302through 324 described above in association with FIG. 3. Though as notedabove the memory representations within FIG. 3 and FIG. 4 are not drawnto any particular drawing scale, the relative proportions of messagesizes are intended to illustrate that the single consolidated message402 may consume marginally more memory than any one of the individualmessages 302 through 324, but that a relatively large memory free area404 results from the communication message consolidation with contentdifference formatting described herein. As such, memory reduction forboth storage and transmission, and bandwidth reduction are possible byuse of the present technology.

Individual fields within the subject line of the single consolidatedmessage 402 are not separately identified, though it should be notedthat the subject line identifies the single consolidated message 402 asa “CONSOLIDATED MESSAGE” to queue a reader that the message has beenprocessed according to the technology described herein, with a timestampequivalent to the last message 324 of the set of messages 302 through324 that were consolidated.

As described above, the additional sequences of message included withinthe memory area 334, as represented again by the angled ellipsis dots,are again illustrated, though details of consolidation processing ofthose additional sequences of messages is fulfilled by the descriptionabove. As such, the technology described herein may identify and processeach sequence of similar messages, and may form a single consolidatedmessage from each set of messages, resulting in additional memory andbandwidth improvements.

FIG. 5 is a diagram of an example of an illustration of consolidatedmessage content 500 of the consolidated message 402 of FIG. 4 aftercommunication message consolidation with content difference formattingrendered on a display, such as the display 204. FIG. 5 representsexample consolidated message content that may be produced from themessages described in association with FIG. 3, as described above inassociation with FIG. 4.

Within the consolidated message 402, a consolidated message header 502is illustrated to include a majority of the redundant information thatwas included within each similar subject line of the individual messages302 through 324 described in association with FIG. 3, which can be seenby comparison with FIG. 3. Additionally, the consolidated message header502 includes the term “CONSOLIDATED MESSAGE” that indicates to the userthat the message is a composed message created by the respectivecomputing device to conserve memory, processing, and bandwidth. Theconsolidated message header 502 also includes the timestamp of thelatest message 324 from FIG. 3 that was consolidated into theconsolidated message 402. As such, the timestamp of the consolidatedmessage 402 carries forward the timestamp of the last message in theconsolidated set of messages.

A link field 504 within the consolidated message content 500 includes alink to test information in the form of a uniform resource locator (URL)for purposes of example. The link field 504 is presumed to have beenincluded within each of the respective messages 302 through 324.

A content summary field 506 further clarifies for the user that thecontent includes consolidated content (e.g., “CONSOLIDATED”). Thecontent summary field 506 further specifies the particular details thatwere again redundantly included within each of the respective messages302 through 324 (e.g., “ACCEPTANCE JOB RESULTS FOR TEST PRODUCT 1” forthe “BUILD ON 01/08/2015). A test results field 508 confirms that theconsolidated test results represents tests that have passed testing(e.g., “PASSED”).

A consolidated difference thread array 510 includes a progressive set ofentries 512 through 534. Each of the progressive set of entries 512through 534 encapsulates content of a respective one of the messages 302through 324 determined to be different relative to a previous orsubsequent message across the set of messages.

A first identified difference thread 536 represented within theprogressive set of differences 512 through 534 is illustrated as acolumn of data that is formatted differently from redundant text fromthe set of messages 302 through 324 that has been reproduced once withinthe consolidated message content 500. The difference thread 536 is alsoillustrated to be formatted differently from redundant text illustratedwithin the progressive set of entries 512 through 534 (e.g., “OF 1370”).This latter redundant text is provided within the present example withinthe consolidated difference thread array 510 to assist a user withreview of the difference, and may be omitted or moved outside of theconsolidated difference thread array 510 as appropriate for the givenimplementation.

For purposes of example, the formatting of the difference thread 536 isbolded and produced in a larger font relative to other redundant text.However, it should be noted that underlining, different coloration offonts, and other forms of distinction to allow a user to rapidly reviewthe difference thread may be utilized as appropriate for the givenimplementation. As such, many possibilities exist for distinguishingprogressive differences across a consolidated set of messages, and allsuch possibilities are considered within the scope of the presenttechnology.

As can also be seen from FIG. 5, each of the progressive set ofdifferences 512 through 534 includes the timestamp of the respectiveoriginal message 302 through 324. Inclusion of the original messagetimestamps allows time correlation of the set of messages that have beenconsolidated. It should be noted that the different timestamps alsorepresent an additional difference thread 538 that was identified acrossthe set of consolidated messages 302 through 324. For purposes ofexample, and to illustrate flexibility of implementation of the presenttechnology, the timestamps within this second difference thread 538 arenot distinguished by different text formatting. However, this separatedifference thread 538 may be formatted differently from the redundanttext within the body of the consolidated message content 500, and mayfurther be formatted differently from the difference thread 536 (e.g.,by use of underlining, or color variations, etc.).

As such, a user may configure the granularity and types of differencethreads that may be formatted differently from redundant text, andrelative to other sets/threads of differences. Additionally, multiplesets of progressive differences between different text strings within agiven set of similar communication messages may be identified, andconsolidation of the different progressive sets of progressivedifferences may be categorized within a single consolidatedcommunication message. Further, as described above, the number ofdifferences may be configured according to a quantity of time a user hasto review consolidated messages, and may be dynamically adjusted by theuser during review if a particular difference thread is of interest.These aspects of flexibility provide improved usability of thecommunication message consolidation with content difference formattingdescribed herein.

FIG. 6 through FIG. 7 described below represent example processes thatmay be executed by devices, such as the core processing module 200, toperform the automated communication message consolidation with contentdifference formatting associated with the present subject matter. Manyother variations on the example processes are possible and all areconsidered within the scope of the present subject matter. The exampleprocesses may be performed by modules, such as the message consolidationwith progressive differences module 214 and/or executed by the CPU 202,associated with such devices. It should be noted that time outprocedures and other error control procedures are not illustrated withinthe example processes described below for ease of illustration purposes.However, it is understood that all such procedures are considered to bewithin the scope of the present subject matter. Further, the describedprocesses may be combined, sequences of the processing described may bechanged, and additional processing may be added or removed withoutdeparture from the scope of the present subject matter.

FIG. 6 is a flow chart of an example of an implementation of a process600 for communication message consolidation with content differenceformatting. The process 600 represents a processor-implemented method ofperforming the communication message consolidation with contentdifference formatting described herein. At block 602, the process 600detects, by a processor, a set of similar messages addressed to a user.At block 604, the process 600 identifies redundantly similar portions ofthe set of similar messages and a progressive set of differences betweenthe set of similar messages. At block 606, the process 600 consolidatesthe set of similar messages into a single consolidated messagecomprising one version of the redundantly similar portions inassociation with the progressive set of differences in a sequence andthe progressive set of differences formatted differently from theredundant similar portions within the single consolidated message.

FIG. 7 is a flow chart of an example of an implementation of a process700 for communication message consolidation with content differenceformatting that includes message consolidation configuration andadditional message consolidation processing details. The process 700represents a processor-implemented method of performing thecommunication message consolidation with content difference formattingdescribed herein. At decision point 702, the process 700 makes adetermination as to whether a request to configure communication messageconsolidation has been detected. For example, a request to configurecommunication message consolidation may be detected in response to auser request to establish parameters, as described above and in moredetail below, for user-specific communication message consolidationpreferences.

In response to determining that a request to configure communicationmessage consolidation has been detected, the process 700 prompts theuser for message consolidation default settings (e.g., parameters) atblock 704. For example, as described above, default settings/parametersmay be specified for a default level of difference details to bepresented within a consolidated communication message, a consolidatedmessage count threshold usable as an event to invoke processing toconsolidate messages, one of more consolidation time periods/frequenciesusable as events to invoke processing to consolidate messages,categories of difference threads and formatting options for eachspecified category of difference thread (e.g., a content differencethread category, a timestamp difference thread category, etc.), andother default settings/parameters as appropriate for a givenimplementation.

At block 706, the process 700 receives and configures messageconsolidation default settings (e.g., parameters) as specified by a userto provide user-specific communication message consolidationpreferences. For example, the process 700 may configure a level ofdifference details of a progressive set of differences that are viewableby the user depending upon how much time is available to the user toprocess the messages. The process 700 may also configure differentevents that may be utilized to invoke processing to consolidatemessages, as appropriate for the user's preferences and the particularimplementation, such as configuring a message consolidation time period.

In response to receiving and configuring message consolidation defaultsettings at block 706 or in response to determining that a request toconfigure communication message consolidation has not been detected atdecision point 702, the process 700 makes a determination at decisionpoint 708 as to whether an event to invoke processing to consolidatemessages has been detected. Events that may be utilized to invokeprocessing to consolidate messages may include any of the configureduser-specific communication message consolidation preferences describedabove (e.g., a consolidated message count threshold, one of more messageconsolidation time periods/frequencies, etc.). In response todetermining at decision point 708 that an event to invoke processing toconsolidate messages has not been detected, the process 700 returns todecision point 702 and iterates as described above.

In response to determining at decision point 708 that an event to invokeprocessing to consolidate messages has been detected, the process 700retrieves a configured level of difference details for the respectiveuser at block 710. At block 712, the process 700 compares messagecontent across a set of messages to identify similarities anddifferences between the subject lines and content of the respectivemessages. The set of messages may include a set of messages that match aconfigured consolidated message count threshold, as described above.

At decision point 714, the process 700 makes a determination as towhether similar content has been identified across the set of messages.In response to determining that similar content has not been identifiedacross the set of messages, the process 700 returns to block 712 andcontinues evaluation and comparison of message content across a set ofmessages to identify similarities and differences between subject linesand content of the respective messages.

In response to determining at decision point 714 that similar contenthas been identified across the set of messages, the process 700identifies one or more difference threads across the message set atblock 716. For example, the process 700 may extract elements from theset of messages that represent a progressive set of differences, and mayform a difference thread from the extracted elements in the progressiveset of differences. The process 700 may also identify redundantlysimilar portions of the set of similar messages, and may identify aprogressive set of differences in accordance with a configured level ofdifference details. The progressive set of differences between the setof similar messages may include identifying messages received during aconfigured message consolidation time period. The process 700 may alsoidentify multiple different progressive sets of differences betweendifferent text strings within the set of similar messages.

At block 718, the process 700 creates a consolidated message. Creatingthe consolidated message may include consolidating the set of similarmessages into a single consolidated message that includes one version ofthe redundantly similar portions.

At block 720, the process 700 adds the difference thread(s) andtimestamps of the original messages to the consolidated message. Assuch, the process 700 consolidates the set of similar messages into asingle consolidated message that includes one version of the redundantlysimilar portions in association with the one or more progressive sets ofdifferences in a sequence within the single consolidated message, andadds timestamps of the original messages.

At block 722, the process 700 formats the difference thread(s) usingconfigured difference thread formatting options. As described above, theuser may configure different formatting options for different categoriesof difference threads (e.g., a content difference thread category, atimestamp difference thread category, etc.). As such, the process 700may utilize the configured formatting options to format one or moredifference threads that have been identified. Formatting may furtherinclude highlighting each difference within the progressive set ofdifferences in the sequence within the single consolidated message in adifferent color relative to the one version of the redundantly similarportions, and may include use of different fonts, different font sizes,underlining, and other text features as appropriate for the givenimplementation.

At block 724, the process 700 delivers the consolidated message to theuser. For example, where the process 700 is operating at a messagingserver device, the consolidated message may be delivered to the user bydelivery to the user's inbox responsive to a user client messagingapplication requesting new messages. Within this implementationbandwidth may be conserved by delivery of the single consolidatedmessage to the user. Alternatively, where the process 700 is operatingat a messaging client device, the consolidated message may be deliveredto the user by updating the user's inbox. Within this implementationmemory use may be reduced by consolidation of the several differentmessages and delivery of the single consolidated message to the user.

At decision point 726, the process 700 begins iteratively determiningwhether a level of detail adjustment has been detected as beingrequested by the user. For example, the user may determine that a givendifference thread is of interest or may determine that the user has moretime to view the particular difference thread relative to the defaultconfigured level of difference details. In response to determining thata level of detail adjustment has been detected as being requested by theuser, the process 700 adjusts the level of difference details within theconsolidated message at block 728. Adjustment of the level of differencedetails may include formulation of a new difference thread that includesmore difference details, may include promotion of difference detailsbeyond the configured or selected level of difference details that mayhave been previously filtered from view within the content of theconsolidated message, or may be implemented otherwise as appropriate forthe particular implementation and location where the messageconsolidation of the process 700 is being performed.

In response to either adjusting the level of difference details withinthe consolidated message at block 728, or in response to determining atdecision point 726 that a level of detail adjustment has not beendetected as being requested by the user, the process 700 makes adetermination at decision point 730 as to whether processing has beencompleted (e.g., for the particular iteration of message consolidation,etc.).

In response to determining at decision point 730 that processing has notbeen completed, the process 700 returns to decision point 726 anditerates as described above. In response to determining at decisionpoint 730 that processing has been completed, the process 700 returns todecision point 702 and iterates as described above.

As such, the process 700 provides for configuration and processing ofmessage consolidation options. The process 700 provides dynamic memory,processing, and bandwidth conservation technology associated withmessaging environments. The messaging environments within which or inassociation with which the process 700 may be implemented include avariety of messaging environments, as described above (e.g., email, textmessaging, IM, SMS, online social networking websites, etc.). A user mayadditionally dynamically change difference thread characteristics withinconsolidated messages during review of a consolidated message.

As described above in association with FIG. 1 through FIG. 7, theexample systems and processes provide communication messageconsolidation with content difference formatting. Many other variationsand additional activities associated with communication messageconsolidation with content difference formatting are possible and allare considered within the scope of the present subject matter.

Those skilled in the art will recognize, upon consideration of the aboveteachings, that certain of the above examples are based upon use of aprogrammed processor, such as the CPU 202. However, the invention is notlimited to such example embodiments, since other embodiments could beimplemented using hardware component equivalents such as special purposehardware and/or dedicated processors. Similarly, general purposecomputers, microprocessor based computers, micro-controllers, opticalcomputers, analog computers, dedicated processors, application specificcircuits and/or dedicated hard wired logic may be used to constructalternative equivalent embodiments.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a,” “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art basedupon the teachings herein without departing from the scope and spirit ofthe invention. The subject matter was described to explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. A system, comprising: a memory; and a processor programmed to: detect a set of similar messages addressed to a user; identify redundantly similar portions of the set of similar messages that provide contextual details related to a progressive set of differences between the set of similar messages; and consolidate, within the memory, the set of similar messages into a single consolidated message comprising the redundantly similar portions preserved in association with sequential entries of the progressive set of differences in a sequence as context usable for interpretation of the progressive set of differences, and with the progressive set of differences formatted differently from formatting applied to the redundantly similar portions within the single consolidated message.
 2. The system of claim 1, where the processor is further programmed to: configure a message consolidation time period that specifies a range of time over which to consolidate messages; and where, in being programmed to consolidate, within the memory, the set of similar messages into the single consolidated message, the processor is programmed to consolidate messages from the detected set of similar messages received during the configured message consolidation time period.
 3. The system of claim 1, where the processor is further programmed to: identify a plurality of different progressive sets of differences between different text strings within the set of similar messages; and where, in being programmed to consolidate, within the memory, the set of similar messages into the single consolidated message, the processor is programmed to categorize each of the plurality of different progressive sets of differences between the different text strings within the set of similar messages within the single consolidated message.
 4. The system of claim 1, where, in being programmed to consolidate, within the memory, the set of similar messages into the single consolidated message with the progressive set of differences formatted differently from the formatting applied to the redundantly similar portions within the single consolidated message, the processor is programmed to highlight each sequential entry of the progressive set of differences in the sequence within the single consolidated message in a different color relative to a color applied to the redundantly similar portions.
 5. The system of claim 1, where the processor is further programmed to provide, with each sequential entry of the progressive set of differences within a body of the single consolidated message, an original timestamp of each original message that contained the respective sequential entry of the progressive set of differences.
 6. The system of claim 1, where the processor is further programmed to deliver the single consolidated message comprising the redundantly similar portions preserved in association with the sequential entries of the progressive set of differences in the sequence as the context usable for interpretation of the progressive set of differences within the single consolidated message to the user.
 7. The system of claim 1, where in being programmed to consolidate, within the memory, the set of similar messages into the single consolidated message, the processor is programmed to: create a content difference thread that comprises the sequential entries of the progressive set of differences; and add the content difference thread to a body of the single consolidated message; and where the processor is further programmed to: create a timestamp difference thread that comprises an original timestamp of each original message that contained each respective sequential entry of the progressive set of differences; and add the timestamp difference thread to the body of the single consolidated message, with each original timestamp correlated with the respective sequential entry of the progressive set of differences.
 8. The system of claim 1, where the progressive set of differences are selected and consolidated into the single consolidated message according to a configured threshold number of difference strings specified by a consolidated message setting.
 9. A computer program product, comprising: a computer readable storage medium having computer readable program code embodied therewith, where the computer readable storage medium is not a transitory signal per se and where the computer readable program code when executed on a computer causes the computer to: detect a set of similar messages addressed to a user; identify redundantly similar portions of the set of similar messages that provide contextual details related to a progressive set of differences between the set of similar messages; and consolidate the set of similar messages into a single consolidated message comprising the redundantly similar portions preserved in association with sequential entries of the progressive set of differences in a sequence as context usable for interpretation of the progressive set of differences, and with the progressive set of differences formatted differently from formatting applied to the redundantly similar portions within the single consolidated message.
 10. The computer program product of claim 9, where the computer readable program code when executed on the computer further causes the computer to: configure a message consolidation time period that specifies a range of time over which to consolidate messages; and where, in causing the computer to consolidate the set of similar messages into the single consolidated message, the computer readable program code when executed on the computer causes the computer to consolidate messages from the detected set of similar messages received during the configured message consolidation time period.
 11. The computer program product of claim 9, where the computer readable program code when executed on the computer further causes the computer to: identify a plurality of different progressive sets of differences between different text strings within the set of similar messages; and where, in causing the computer to consolidate the set of similar messages into the single consolidated message, the computer readable program code when executed on the computer causes the computer to categorize each of the plurality of different progressive sets of differences between the different text strings within the set of similar messages within the single consolidated message.
 12. The computer program product of claim 9, where, in causing the computer to consolidate the set of similar messages into the single consolidated message with the progressive set of differences formatted differently from the formatting applied to the redundantly similar portions within the single consolidated message, the computer readable program code when executed on the computer causes the computer to highlight each sequential entry of the progressive set of differences in the sequence within the single consolidated message in a different color relative to a color applied to the redundantly similar portions.
 13. The computer program product of claim 9, where the computer readable program code when executed on the computer further causes the computer to provide, with each sequential entry of the progressive set of differences within a body of the single consolidated message, an original timestamp of each original message that contained the respective sequential entry of the progressive set of differences.
 14. The computer program product of claim 9, where the computer readable program code when executed on the computer further causes the computer to deliver the single consolidated message comprising the redundantly similar portions preserved in association with the sequential entries of the progressive set of differences in the sequence as the context usable for interpretation of the progressive set of differences within the single consolidated message to the user.
 15. The computer program product of claim 9, where, in causing the computer to consolidate, within the memory, the set of similar messages into the single consolidated message, the computer readable program code when executed on the computer causes the computer to: create a content difference thread that comprises the sequential entries of the progressive set of differences; and add the content difference thread to a body of the single consolidated message; and where the computer readable program code when executed on the computer further causes the computer to: create a timestamp difference thread that comprises an original timestamp of each original message that contained each respective sequential entry of the progressive set of differences; and add the timestamp difference thread to the body of the single consolidated message, with each original timestamp correlated with the respective sequential entry of the progressive set of differences.
 16. The computer program product of claim 9, where the progressive set of differences are selected and consolidated into the single consolidated message according to a configured threshold number of difference strings specified by a consolidated message setting. 